Following the mailing list discussion, require that the widget does not
have a pending size_allocate when calling the draw function.
http://mail.gnome.org/archives/gtk-devel-list/2010-September/msg00214.html
and the associated thread explain this in more detail.
GdkEventExpose *tmp_event;
g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (!GTK_WIDGET_ALLOC_NEEDED (widget));
g_return_if_fail (cr != NULL);
cairo_save (cr);